The present invention relates generally to computers, and more specifically, to rendering components within different browser environments.
In general, a rich web user interface involves several, different concepts of rendering web content within a browser. Two of the fundamental concepts are client side aggregation of web pages and server side aggregation of web pages.
Server side aggregation is characterized by having a server performing the aggregation of pages and content into a full page, which is sent to the browser. Any dynamic components are executed on the server side. Typical dynamic components are portlets based on the specification Java Specification Request 286 (JSR286), for example. (Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates.)
Client side aggregation is characterized by doing the final aggregation of pages and content within the browser itself. The server provides page fragments, page feeds, etc. Dynamic components, such as widgets, are executed on the browser side. Typical components are described in the specifications for iWidgets, Open Social, etc.
These two concepts have different programming models. Having components and pages which support both programming models at the same time is difficult. It is especially hard to optimize both the rendering at the server and the client side while at the same time exploiting each side's best capabilities.
U.S. Pat. No. 7,685,603 B2 “Selecting Client Adapters” by Singler et al., discloses methods and apparatuses, including computer program products, for selecting client adapters. In the disclosed system, a client abstraction layer identifies one or more selection data elements in a client request and selects an adapter to communicate with the client based on the selection data elements. Each selection data element specifies an adapter type, a client type, or data describing the client. The adapter may be selected based on a multi-stage selection process that involves performing an adapter-request process for selecting an adapter based on the selection data elements that specify the adapter type. If the adapter-request process fails to select an adapter, then a client-identification process for selecting an adapter based on the selection data elements that specify the client type is performed. If the client-identification process fails to select an adapter, a client-description process for selecting an adapter based on the selection data elements that specify data describing the client is performed.